What is recursive-readdir?
The recursive-readdir npm package is used to recursively read directories and list all files within them. It can be particularly useful for tasks such as file system traversal, searching for specific file types, and performing operations on a large number of files within nested directories.
What are recursive-readdir's main functionalities?
Basic Usage
This feature allows you to list all files in a directory and its subdirectories. The code sample demonstrates how to use the package to read all files in a specified directory.
const recursive = require('recursive-readdir');
recursive('path/to/directory', (err, files) => {
if (err) {
console.error(err);
} else {
console.log(files);
}
});
Filtering Files
This feature allows you to filter out certain files or directories. The code sample demonstrates how to ignore the 'node_modules' directory while listing all other files.
const recursive = require('recursive-readdir');
const ignoreFunc = (file, stats) => {
return stats.isDirectory() && file === 'node_modules';
};
recursive('path/to/directory', [ignoreFunc], (err, files) => {
if (err) {
console.error(err);
} else {
console.log(files);
}
});
Using Promises
This feature allows you to use promises instead of callbacks for better readability and error handling. The code sample demonstrates how to use promises to list all files in a specified directory.
const recursive = require('recursive-readdir');
recursive('path/to/directory')
.then(files => {
console.log(files);
})
.catch(err => {
console.error(err);
});
Other packages similar to recursive-readdir
readdirp
The readdirp package is another option for recursively reading directories. It offers a more flexible API with support for streams, promises, and callbacks. Compared to recursive-readdir, readdirp provides more advanced filtering options and better performance for large directories.
klaw
The klaw package is a file system walker that allows you to recursively read directories and perform actions on each file. It supports streams and provides a more modular approach compared to recursive-readdir. Klaw is particularly useful for applications that need to process files as they are read.
fs-extra
The fs-extra package extends the native Node.js fs module with additional methods, including recursive directory reading. While it is not as specialized as recursive-readdir, fs-extra offers a wide range of file system utilities, making it a versatile choice for various file operations.
recursive-readdir
Recursively list all files in a directory and its subdirectories. It does not list the directories themselves.
Because it uses fs.readdir, which calls readdir under the hood
on OS X and Linux, the order of files inside directories is not guaranteed.
Installation
npm install recursive-readdir
Usage
var recursive = require("recursive-readdir");
recursive("some/path", function (err, files) {
console.log(files);
});
It can also take a list of files to ignore.
var recursive = require("recursive-readdir");
recursive("some/path", ["foo.cs", "*.html"], function (err, files) {
console.log(files);
});
You can also pass functions which are called to determine whether or not to
ignore a file:
var recursive = require("recursive-readdir");
function ignoreFunc(file, stats) {
return stats.isDirectory() && path.basename(file) == "test";
}
recursive("some/path", ["foo.cs", ignoreFunc], function (err, files) {
console.log(files);
});
Promises
You can omit the callback and return a promise instead.
var recursive = require("recursive-readdir");
recursive("some/path").then(
function(files) {
console.log("files are", files);
},
function(error) {
console.error("something exploded", error);
}
);
The ignore strings support Glob syntax via
minimatch.